package com.tbit.main.dao.core;

import com.tbit.main.h2.pojo.ParkPoint;
import com.tbit.main.pojo.BleBeacon;
import com.tbit.main.pojo.ParkPointBoundCount;
import org.apache.ibatis.annotations.Param;

import java.util.List;
import java.util.Map;

/**
 * @author LMY
 * @create 2020-11-16 19:21
 * 道钉
 */
public interface BleBeaconDao {
    /**
     * 查询站点内道钉
     *
     * @param map
     * @return
     */
    List<BleBeacon> queryPage(Map<String, Object> map);

    /**
     * 查询运营区域内道钉
     *
     * @return
     */
    List<ParkPoint> getBleBeacon(Integer accountId);

    /**
     * 查询分区道钉
     *
     * @param regionId
     * @return
     */
    List<ParkPoint> getBleBeaconRegionId(@Param("regionId") String regionId);

    /**
     * 查询全部内容
     *
     * @param map
     * @return
     */
    Integer queryCount(Map<String, Object> map);

    /**
     * 查询详细
     *
     * @param map
     * @return
     */
    List<ParkPointBoundCount> getByStateId(Map<String, Object> map);

    /**
     * 批量添加
     *
     * @param list
     */
    void addBatch(List<BleBeacon> list);

    /**
     * 添加
     *
     * @param bleBeacon
     */
    void insert(BleBeacon bleBeacon);

    /**
     * 删除
     *
     * @param bleBeaconId
     */
    void del(Integer bleBeaconId);

    /**
     * 删除
     *
     * @param machineNO
     */
    void delNO(String machineNO);


    /**
     * 通过编号批量获取
     *
     * @param machineNOs
     * @return
     */
    List<String> getByMachineNOs(List<String> machineNOs);

    /**
     * 通过设备编号获取
     *
     * @param machineNO
     * @return
     */
    BleBeacon getByNO(String machineNO);

    /**
     * 更新时间
     *
     * @param machineNOs
     */
    void updateTime(@Param("machineNOs") String machineNOs);

    /**
     * 更新
     */
    void update(Map<String, Object> map);

    /**
     * 站点设备分组
     *
     * @param map
     * @return
     */
    List<Map<String, Object>> getDevice(Map<String, Object> map);

    /**
     * 根据时间查询
     *
     * @param map
     * @return
     */
    List<BleBeacon> getByNOTime(Map<String, Object> map);

    /**
     * @param machineNOs
     */
    void updateState(@Param("machineNOs") String machineNOs, @Param("state") Integer state);

    /**
     * 根据时间查询
     *
     * @param map
     * @return
     */
    List<BleBeacon> getTime(Map<String, Object> map);

    /**
     * 根据时间查询分组
     *
     * @param map
     * @return
     */
    List<ParkPointBoundCount> getTimeCount(Map<String, Object> map);

    /**
     * 查询所有
     *
     * @param parkPointIds
     * @return
     */
    List<ParkPointBoundCount> getAllId(String parkPointIds);

    /**
     * 根据设备编号查询
     *
     * @param machineNO
     * @return
     */
    BleBeacon getByMachineNO(String machineNO);
}
